home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993…ch: Other People's Memory / ADC Developer CD (1993-03) (''Other People's Memory'')_iso / Dev.CD Mar 93.iso / Development Platforms / Apple II / Essentials / MPW IIGS Interfaces / PIIGSIncludes / Resources.p < prev    next >
Encoding:
Text File  |  1992-02-26  |  8.2 KB  |  218 lines  |  [TEXT/MPS ]

  1. {********************************************
  2. ; File: Resources.p
  3. ;
  4. ;
  5. ; Copyright Apple Computer, Inc. 1986-92
  6. ; All Rights Reserved
  7. ;
  8. ********************************************}
  9.  
  10. UNIT RESOURCES;
  11. INTERFACE
  12. USES TYPES,MEMORY,GSOS;
  13. CONST
  14.  
  15.  
  16. { ResourceConverter Codes }
  17. resLogOut = $0;
  18. resLogIn = $1;
  19. resLogApp = $0;
  20. resLogSys = $2;
  21.  
  22. { Error Codes }
  23. resForkUsed = $1E01;  { Resource fork not empty }
  24. resBadFormat = $1E02;  { Format of resource fork is unknown }
  25. resNoConverter = $1E03;  { No converter routine available for resource type }
  26. resNoCurFile = $1E04;  { there are no current open resource files }
  27. resDupID = $1E05;  { ID is already used }
  28. resNotFound = $1E06;  { resource was not found }
  29. resFileNotFound = $1E07;  { resource file not found }
  30. resBadAppID = $1E08;  { User ID not found, please call ResourceStartup }
  31. resNoUniqueID = $1E09;  { a unique ID was not found }
  32. {$IFC UNDEFINED resIndexRange }  { Index is out of range }
  33. resIndexRange = $1E0A;
  34. {$SETC resIndexRange := 0}
  35. {$ENDC}
  36. resSysIsOpen = $1E0B;  { System file is already open }
  37. resHasChanged = $1E0C;  { Resource marked changed; specified operation not allowed }
  38. resDiffConverter = $1E0D;  { Different converter already logged in for this resource type }
  39. resDiskFull = $1E0E;  { Volume is full }
  40. resInvalidShutDown = $1E0F; { can't shut down ID 401E }
  41. resNameNotFound = $1E10; { no resource with given name }
  42. resBadNameVers = $1E11; { bad version in rResName resource }
  43. resDupStartUp = $1E12; { already started with this ID }
  44. resInvalidTypeOrID = $1E13; { type or ID is 0 }
  45.  
  46. { Other Constants }
  47. resChanged = $0020;
  48. resPreLoad = $0040;
  49. resProtected = $0080;
  50. resAbsLoad = $0400;
  51. resConverter = $0800;
  52. resMemAttr = $C31C;  { Flags passed to the NewHandle Memory Manager call }
  53. systemMap = $0001;
  54. mapChanged = $0002;
  55. romMap = $0004;
  56. resNameOffset = $10000;  { type holding names }
  57. resNameVersion = $0001;
  58. sysFileID = $0001;
  59.  
  60. { Resource Type Numbers }
  61. rIcon = $8001;  { Icon type }
  62. rPicture = $8002;  { Picture type }
  63. rControlList = $8003;  { Control list type }
  64. rControlTemplate = $8004;  { Control template type }
  65. rC1InputString = $8005;  { GS/OS class 1 input string }
  66. rPString = $8006;  { Pascal string type }
  67. rStringList = $8007;  { String list type }
  68. rMenuBar = $8008;  { MenuBar type }
  69. rMenu = $8009;  { Menu template }
  70. rMenuItem = $800A;  { Menu item definition }
  71. rTextForLETextBox2 = $800B;  { Data for LineEdit LETextBox2 call }
  72. rCtlDefProc = $800C;  { Control definition procedure type }
  73. rCtlColorTbl = $800D;  { Color table for control }
  74. rWindParam1 = $800E;  { Parameters for NewWindow2 call }
  75. rWindParam2 = $800F;  { Parameters for NewWindow2 call }
  76. rWindColor = $8010;  { Window Manager color table }
  77. rTextBlock = $8011;  { Text block }
  78. rStyleBlock = $8012;  { TextEdit style information }
  79. rToolStartup = $8013;  { Tool set startup record }
  80. rResName = $8014;  { Resource name }
  81. rAlertString = $8015;  { AlertWindow input data }
  82. rText = $8016;  { Unformatted text }
  83. rCodeResource = $8017;
  84. rCDEVCode = $8018;
  85. rCDEVFlags = $8019;
  86. rTwoRects = $801A;  { Two rectangles }
  87. rFileType = $801B; { Filetype descriptors; File Type Note $42 }
  88. rListRef = $801C;  { List member }
  89. rCString = $801D;  { C string }
  90. rXCMD = $801E;
  91. rXFCN = $801F;
  92. rErrorString = $8020;  { ErrorWindow input data }
  93. rKTransTable = $8021;  { Keystroke translation table }
  94. rWString = $8022;
  95. rC1OutputString = $8023;  { GS/OS class 1 output string }
  96. rSoundSample = $8024;
  97. rTERuler = $8025;  { TextEdit ruler information }
  98. rFSequence = $8026;
  99. rCursor = $8027;  { Cursor resource type }
  100. rItemStruct = $8028;
  101. rVersion = $8029;
  102. rComment = $802A;
  103. rBundle = $802B;
  104. rFinderPath = $802C;
  105. rPaletteWindow = $802D; { used by HyperCard IIgs 1.1 }
  106. rTaggedStrings = $802E;
  107. rPatternList = $802F;
  108. rRectList = $C001;
  109. rPrintRecord = $C002;
  110. rFont = $C003;
  111.  
  112. TYPE
  113. ResID = Longint ;
  114. ResType = Integer ;
  115. ResAttr = Integer ;
  116. ResHeaderRec = RECORD
  117.     rFileVersion : Longint; { Format version of resource fork }
  118.     rFileToMap : Longint; { Offset from start to resource map record }
  119.     rFileMapSize : Longint; { Number of bytes map occupies in file }
  120.     rFileMemo : PACKED ARRAY[1..128] OF Byte; { Reserved space for application }
  121. END;
  122. FreeBlockRec = RECORD
  123.     blkOffset : Longint;
  124.     blkSize : Longint;
  125. END;
  126. ResMapHndl = ^ResMapPtr;
  127. ResMapPtr = ^ResMap;
  128. ResMap = RECORD
  129.     mapNext : ResMapHndl; { Handle to next resource map }
  130.     mapFlag : Integer; { Bit Flags }
  131.     mapOffset : Longint; { Map's file position }
  132.     mapSize : Longint; { Number of bytes map occupies in file }
  133.     mapToIndex : Integer;
  134.     mapFileNum : Integer;
  135.     mapID : Integer;
  136.     mapIndexSize : Longint;
  137.     mapIndexUsed : Longint;
  138.     mapFreeListSize : Integer;
  139.     mapFreeListUsed : Integer;
  140.     mapFreeList : ARRAY[1..1] OF FreeBlockRec; { n bytes (array of free block records) }
  141. END;
  142. MapRec = ResMap;        { TBR3 definitions }
  143. MapRecPtr = ResMapPtr;
  144. MapRecHndl = ResMapHndl;
  145.  
  146. ResRefRecPtr = ^ResRefRec;
  147. ResRefRec = RECORD
  148.     resType : ResType;
  149.     resID : ResID;
  150.     resOffset : Longint;
  151.     resAttr : ResAttr;
  152.     resSize : Longint;
  153.     resHandle : Handle;
  154. END;
  155. ResourceSpec = RECORD
  156.     resourceType : ResType;
  157.     resourceID : ResID;
  158. END;
  159. ResNameEntryPtr = ^ResNameEntry;
  160. ResNameEntry = RECORD
  161.     namedResID : ResID;
  162.     resName : Str255;
  163. END;
  164. ResNameRecHndl = ^ResNameRecPtr;
  165. ResNameRecPtr = ^ResNameRec;
  166. ResNameRec = RECORD
  167.     version : Integer;
  168.     nameCount : Longint;
  169.     resNameEntries : ARRAY[1..1] OF ResNameEntry;
  170. END;
  171. PROCEDURE AddResource ( resourceHandle:Handle; resourceAttr:ResAttr; resourceType:ResType; resourceID:ResID)  ;
  172. PROCEDURE CloseResourceFile ( fileID:Integer)  ;
  173. FUNCTION CountResources ( resourceType:ResType) : Longint ;
  174. FUNCTION CountTypes  : Integer ;
  175. PROCEDURE CreateResourceFile ( auxType:Longint; fileType:Integer; fileAccess:Integer; fileName:GSString255Ptr)  ;
  176. PROCEDURE DetachResource ( resourceType:ResType; resourceID:ResID)  ;
  177. FUNCTION GetCurResourceApp  : Integer ;
  178. FUNCTION GetCurResourceFile  : Integer ;
  179. FUNCTION GetIndResource ( resourceType:ResType; resourceIndex:Longint) : ResID ;
  180. FUNCTION GetIndType ( typeIndex:Integer) : ResType ;
  181. FUNCTION  GetMapHandle ( fileID:Integer) : ResMapHndl ;
  182. FUNCTION GetOpenFileRefNum ( fileID:Integer) : Integer ;
  183. FUNCTION GetResourceAttr ( resourceType:ResType; resourceID:ResID) : ResAttr ;
  184. FUNCTION GetResourceSize ( resourceType:ResType; currentID:ResID) : Longint ;
  185. FUNCTION HomeResourceFile ( resourceType:ResType; resourceID:ResID) : Integer ;
  186. FUNCTION  LoadAbsResource ( loadAddress:Longint; maxSize:Longint; resourceType:ResType; resourceID:ResID) : Longint ;
  187. FUNCTION LoadResource ( resourceType:ResType; resourceID:ResID) : Handle ;
  188. PROCEDURE MarkResourceChange ( changedFlag:Boolean; resourceType:ResType; resourceID:ResID)  ;
  189. PROCEDURE MatchResourceHandle (VAR resourceInfo:ResourceSpec; resourceHandle:Handle)  ;
  190. FUNCTION OpenResourceFile ( openAccess:Integer; resourceMapPtr:ResMapPtr; fileName:GSString255Ptr) : Integer ;
  191. PROCEDURE ReleaseResource ( purgeLevel:Integer; resourceType:ResType; resourceID:ResID)  ;
  192. PROCEDURE RemoveResource ( resourceType:ResType; resourceID:ResID)  ;
  193. PROCEDURE ResourceBootInit   ;
  194. PROCEDURE ResourceConverter ( converterProc:ProcPtr; resourceType:ResType; logFlags:Integer)  ;
  195. PROCEDURE ResourceReset   ;
  196. PROCEDURE ResourceShutDown   ;
  197. PROCEDURE ResourceStartUp ( userID:Integer)  ;
  198. FUNCTION ResourceStatus  : Boolean ;
  199. FUNCTION ResourceVersion  : Integer ;
  200. PROCEDURE SetCurResourceApp ( userID:Integer)  ;
  201. PROCEDURE SetCurResourceFile ( fileID:Integer)  ;
  202. PROCEDURE SetResourceAttr ( resourceAttr:ResAttr; resourceType:ResType; currentID:ResID)  ;
  203. FUNCTION SetResourceFileDepth ( searchDepth:Integer) : Integer ;
  204. PROCEDURE SetResourceID ( newID:ResID; resourceType:ResType; currentID:ResID)  ;
  205. FUNCTION SetResourceLoad ( readFlag:Integer) : Integer ;
  206. FUNCTION UniqueResourceID ( IDrange:Integer; resourceType:ResType) : ResID ;
  207. PROCEDURE UpdateResourceFile ( fileID:Integer)  ;
  208. PROCEDURE WriteResource ( resourceType:ResType; resourceID:ResID)  ;
  209.  
  210. FUNCTION LoadResource2(flags:integer; oldAttr:Ptr; rType:ResType; rID:ResID): Handle;
  211. FUNCTION RMFindNamedResource(rType:ResType; name:StringPtr; fileIDptr:Ptr): longint;
  212. PROCEDURE RMGetResourceName(rType:ResType; rID:ResID; name:StringPtr);
  213. FUNCTION RMLoadNamedResource(rType:ResType; name:StringPtr): Handle;
  214. PROCEDURE RMSetResourceName(rType:ResType; rID:ResID; name:StringPtr);
  215.  
  216. IMPLEMENTATION
  217. END.
  218.